#ifndef DATACONTROLLER_H
#define DATACONTROLLER_H

#include <QObject>

class DataController : public QObject
{
    Q_OBJECT
public:
    explicit DataController(QObject *parent = nullptr);
    // 槽函数
    // 更新listwidget
    void renewListItem(const QString chosenField);
    // 请求获取数据表名字
    void getTableNamesFromDB();
    // 切换数据库当前数据表
    void switchTable(const QString& newTableName);
    // 获取数据库的所有字段
    void getAllFieldFromDB();
    // 连接数据库操作
    void initDBconnection(QString username, QString password);
    // 向数据库发起全部记录请求
    void getAllInfoFromDB();
    // 向数据库请求所有字段信息
    void getFieldInfoFromDB(const QVector<QString> fieldList);
    // 向数据库请求带条件的记录
    // 第一个参数是字段列表，第二个参数是每个字段对应的选中条件
    void getFieldInfosFromDB(const QVector<QString> fieldList, const QVector<QVector<QString>> conditionList);

signals:
    void connectionState(bool ok);
    void returnTableNameList(const QVector<QString> tableNameList);
    void addItemToListView(const QVector<QString> item);
    void returnAllFields(const QStringList fields);
    void returnAllInfo(const QVector<QVector<QString>> infos);
    void returnNewTableShowInfo(const QVector<QVector<QString>> infos);
    void returnFieldInfo(const QVector<QVector<QString>> infos);

};

#endif // DATACONTROLLER_H
